Component({
    // 接收父组件传递的任务数据
    properties: {
      task: {
        type: Object,
        value: {},
        observer: function(newVal) {
          // 监听任务数据变化，更新本地状态（如优先级颜色）
          this.setData({
            priorityColor: this.getPriorityColor(newVal.priority)
          });
        }
      }
    },
  
    data: {
      priorityColor: '#9CA3AF',  // 优先级默认颜色（低优先级）
      isSlide: false,            // 是否处于左滑状态（显示删除按钮）
      startX: 0,                 // 触摸起始X坐标（左滑逻辑用）
      deleteWidth: 180           // 删除按钮宽度（rpx）
    },
  
    methods: {
      // 根据优先级获取对应颜色（高：红/中：黄/低：灰）
      getPriorityColor(priority) {
        switch(priority) {
          case 'high': return '#FF5252';
          case 'medium': return '#FFD166';
          case 'low': return '#9CA3AF';
          default: return '#9CA3AF';
        }
      },
  
      // 触摸开始：记录起始位置
      onTouchStart(e) {
        this.setData({
          startX: e.changedTouches[0].clientX,
          isSlide: false  // 触摸开始时重置左滑状态
        });
      },
  
      // 触摸移动：判断是否触发左滑（显示删除按钮）
      onTouchMove(e) {
        const moveX = e.changedTouches[0].clientX;
        const diffX = this.data.startX - moveX;  // 左滑距离（正值为左滑）
        
        // 左滑距离超过50rpx且未处于左滑状态时，触发左滑
        if (diffX > 50 && !this.data.isSlide) {
          this.setData({ isSlide: true });
        }
        // 右滑距离超过30rpx且处于左滑状态时，取消左滑
        else if (diffX < -30 && this.data.isSlide) {
          this.setData({ isSlide: false });
        }
      },
  
      // 触摸结束：防止误触（仅当左滑距离达标时保持左滑状态）
      onTouchEnd(e) {
        const moveX = e.changedTouches[0].clientX;
        const diffX = this.data.startX - moveX;
        
        if (diffX < 50 && this.data.isSlide) {
          this.setData({ isSlide: false });
        }
      },
  
      // 点击任务状态切换按钮（完成/未完成）
      handleToggle() {
        // 向父组件（todoList 页）传递状态切换事件
        this.triggerEvent('toggle', {
          taskId: this.data.task._id,
          status: this.data.task.status
        });
        // 切换后取消左滑状态
        this.setData({ isSlide: false });
      },
  
      // 点击删除按钮
      handleDelete() {
        // 向父组件传递删除事件
        this.triggerEvent('delete', {
          taskId: this.data.task._id
        });
        // 删除后取消左滑状态
        this.setData({ isSlide: false });
      },
  
      // 点击任务项（跳转至详情/编辑页）
      goToDetail() {
        if (!this.data.isSlide) {  // 左滑状态下不触发跳转（防止误触）
          wx.navigateTo({
            url: `/pages/taskEdit/taskEdit?taskId=${this.data.task._id}`
          });
        }
      }
    }
  });